長得很像 Netflix 的首頁 
作品連結 
這個專案一樣有用到一點 js,不過我就專注在練習切版。
全域設定:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43      :root  {    --primary-color : #e50914 ;     --dark-color : #141414 ; } * {     box-sizing : border-box;     margin : 0 ;     padding : 0 ; }      body  {    font-family : 'Arial' , sans-serif;     -webkit-font -smoothing: antialiased;     background : #000 ;     color : #999 ; } ul  {    list-style : none; } h1 ,h2 ,h3 ,h4  {    color : #fff ; } a  {    color : #fff ;     text-decoration : none; } p  {    margin : 0.5rem  0 ; } img  {    width : 100% ; } 
功能性設定 
tab 區域的 items
1 2 3 4 5 6 7 8 9 .container  {    max-width : 70% ;     margin : auto;     overflow : hidden;     padding : 0  2rem ; } 
各種文字的基本樣式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 .text-xl  {    font-size : 2rem ; } .text-lg  {    font-size : 1.8rem ;     margin-bottom : 1rem ; } .text-md  {    margin-bottom : 1.5rem ;     font-size : 1.2rem ; } .text-center  {    text-align : center; } .text-dark  {    color : #999 ; } 
所有的按鈕的基本樣式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 .btn  {    display : inline-block;     background : var (--primary-color);     color : #fff ;     padding : 0.4rem  1.3rem ;     font-size : 1rem ;     text-align : center;     border : none;     cursor : pointer;     margin-right : 0.5rem ;     transition : opacity 0.2s  ease-in;     outline : none;     box-shadow : 0  1px  0  rgba (0 , 0 , 0 , 0.45 );     border-radius : 2px ; } 
head: 
這邊中間的 script 的部分是引入 icon
1 2 3 4 5 6 7 8 <head >     <meta  charset ="UTF-8" >      <meta  name ="viewport"  content ="width=device-width, initial-scale=1.0" >      <script  src ="https://kit.fontawesome.com/b6d6d6c74b.js"  crossorigin ="anonymous" >      </script >      <link  rel ="stylesheet"  href ="css/style.css" >      <title > Netflix - Watch TV Shows Online, Watch Movies Online</title >  </head > 
body: 
要處理的部分有四點:
1.兩個紅色框框區塊
2.背景圖片
3.使用偽元素上陰影
4.調整所有文字以及按鈕部分
有最上方 Netflix 跟 Sign in 處,用 header 來處理
html:
1 2 3 4 5 6 7 8 9 10 11 <header  class ="showcase" >         <div  class ="showcase-top" >              <img  src ="https://i.ibb.co/r5krrdz/logo.png"  alt =""  />              <a  href ="#"  class ="btn btn-rounded" > Sign In</a >          </div >          <div  class ="showcase-content" >              <h1 > See what's next</h1 >              <p > Watch anywhere. Cancel Anytime</p >              <a  href ="#"  class ="btn btn-xl" > Watch Free For 30 Days <i  class ="fas fa-chevron-right btn-icon" > </i > </a >          </div >      </header >  
css:
這裡設定的是整片視窗的圖片大小以及設定定位給其他的物件
1 2 3 4 5 6 7 .showcase  {    width : 100% ;     height : 93vh ;          position : relative;     background : url ('https://i.ibb.co/vXqDmnh/background.jpg' ) no-repeat center center/cover; } 
這邊使用偽元素來疊層上去陰影
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 .showcase ::after  {         content : '' ;     position : absolute;     top : 0 ;     left : 0 ;     width : 100% ;     height : 100% ;          z-index : 1 ;          background : rgba (0 , 0 , 0 , 60% );          box-shadow : inset 120px  100px  250px  #000000 , inset -120px  -100px  250px  #000000 ; } 
這邊主要控制的是 Netflix 那一整條的區域並設定高度
1 2 3 4 5 6 .showcase-top  {  position : relative;      z-index : 2 ;   height : 90px ; } 
這邊就是針對 Netflix 圖片 logo 的部分調整定位 大小
1 2 3 4 5 6 7 8 9 10 .showcase-top  img  {  width : 170px ;      position : absolute;      top : 50% ;   left : 50% ;   transform : translate (-50% , -50% ); } 
這邊處理 link 的部分也就是 Sign In 的部位
1 2 3 4 5 6 7 8 .showcase-top  a  {     position : absolute;   top : 50% ;   right : 0 ;      transform : translate (-50% , -50% ); } 
這邊是中間的紅框文案內容區域+一個大按鈕
1 2 3 4 5 6 7 8 9 10 11 12 13 14 .showcase-content  {  position : relative;      z-index : 2 ;   width : 65% ;   margin : auto;      display : flex;   flex-direction : column;   justify-content : center;   align-items : center;   text-align : center;   margin-top : 9rem ; } 
針對內文調整
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 .showcase-content  h1  {  font-weight : 700 ;   font-size : 5.2rem ;   line-height : 1.1 ;   margin : 0  0  2rem ; } .showcase-content  p  {  text-transform : uppercase;   color : #fff ;   font-weight : 400 ;   font-size : 1.9rem ;   line-height : 1.25 ;   margin : 0  0  2rem ; } 
tab 區域 
重點部分:
1.3 個 icon 處理
2.紅色跟深灰色底線處理
3.bgc 的顏色比較淡要改
html:
這部分有牽涉到一些 js,我會注重再切版的部分。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <section  class ="tabs" >         <div  class ="container" >              <div  id ="tab-1"  class ="tab-item tab-border" >                  <i  class ="fas fa-door-open fa-3x" > </i >                  <p  class ="hide-sm" > Cancel at any time</p >              </div >              <div  id ="tab-2"  class ="tab-item" >                  <i  class ="fas fa-tablet-alt fa-3x" > </i >                  <p  class ="hide-sm" > Watch anywhere</p >              </div >              <div  id ="tab-3"  class ="tab-item" >                  <i  class ="fas fa-tags fa-3x" > </i >                  <p  class ="hide-sm" > Pick your price</p >              </div >          </div >      </section >  
css:
設定整個 tab 區域的背景色跟 padding,加上深灰色底線
1 2 3 4 5 6 .tabs  {  background : var (--dark-color);   padding-top : 1rem ;   border-bottom : 3px  solid #3d3d3d ;   border-right : none; } 
這個 container 包住三個 item,所以直接 grid 設定下去很直觀
1 2 3 4 5 6 7 8 .tabs  .container  {  display : grid;   grid-template-columns : repeat (3 , 1 fr);   grid-gap: 1rem ;   align-items : center;   justify-content : center;   text-align : center; } 
首先 p 區域是文字區域的大小跟位置微調
設置 container 下面所有的 items 讓它們都有 padding 上下
設置 hover 碰觸時出現手指指標以及呈現白色
每個 icon 下方的紅色 border
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 .tabs  p  {  font-size : 1.2rem ;   padding-top : 0.5rem ; } .tabs  .container  > div  {  padding : 1.5rem  0 ; } .tabs  .container  > div :hover  {  color : #fff ;   cursor : pointer; } .tab-border  {  border-bottom : var (--primary-color) 4px  solid; } 
Tab Content 
區域一
比較直觀就直接一個 div 解決
html:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <section  class ="tab-content" >         <div  class ="container" >                           <div  id ="tab-1-content"  class ="tab-content-item show" >                  <div  class ="tab-1-content-inner" >                      <div >                          <p  class ="text-lg" >                              If you decide Netflix isn't for you - no problem. No commitment.                             Cancel online anytime.                         </p >                          <a  href ="#"  class ="btn btn-lg" > Watch Free For 30 Days</a >                      </div >                      <img  src ="https://i.ibb.co/J2xDJV7/tab-content-1.png"  alt =""  />                  </div >              </div >  
css:
這邊也是直接 grid 把區塊平分,設定 gap 後全部置中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 .tab-content  {    padding : 3rem  0 ;     background : #000 ;     color : #fff ; } #tab-1-content  .tab-1-content-inner  {    display : grid;     grid-template-columns : repeat (2 , 1 fr);     grid-gap: 2rem ;     align-items : center;     justify-content : center; } 
tab 區域二 
這邊要設置兩大部分:
1.content-top 這個部分是上方的文字以及按鈕
2.content-bottom 下方三個 items 以及文案
html:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40            <div  id ="tab-2-content"  class ="tab-content-item" >                 <div  class ="tab-2-content-top" >                     <p  class ="text-lg" >                         Watch TV shows and movies anytime, anywhere — personalized for                        you.                    </p >                     <a  href ="#"  class ="btn btn-lg" > Watch Free For 30 Days</a >                 </div >                 <div  class ="tab-2-content-bottom" >                     <div >                         <img  src ="https://i.ibb.co/DpdN7Gn/tab-content-2-1.png"  alt =""  />                         <p  class ="text-md" >                             Watch on your TV                        </p >                         <p  class ="text-dark" >                             Smart TVs, PlayStation, Xbox, Chromecast, Apple TV, Blu-ray                            players and more.                        </p >                     </div >                     <div >                         <img  src ="https://i.ibb.co/R3r1SPX/tab-content-2-2.png"  alt =""  />                         <p  class ="text-md" >                             Watch instantly or download for later                        </p >                         <p  class ="text-dark" >                             Available on phone and tablet, wherever you go.                        </p >                     </div >                     <div >                         <img  src ="https://i.ibb.co/gDhnwWn/tab-content-2-3.png"  alt =""  />                         <p  class ="text-md" >                             Use any computer                        </p >                         <p  class ="text-dark" >                             Watch right on Netflix.com.                        </p >                     </div >                 </div >             </div >  
css:
這邊處理全部都直接 grid,設置好版面比例之後就直接置中很直觀
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #tab-2-content  .tab-2-content-top  {    display : grid;     grid-template-columns : 2 fr 1 fr;     grid-gap: 1rem ;     justify-content : center;     align-items : center; } #tab-2-content  .tab-2-content-bottom  {    margin-top : 2rem ;     display : grid;     grid-template-columns : 1 fr 1 fr 1 fr;     grid-gap: 2rem ;     justify-content : center;     align-items : center;     text-align : center; } 
tab 區域三 table 
這邊來製作表單:
上方大標題以及紅色按鈕使用兩個全域型 class 來設定,class=”text-center”,class=”text-lg” 這兩個 class 內部自訂文字顏色大小並且置中
表頭(thead)
表身體(tbody)
html:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72             <div  id ="tab-3-content"  class ="tab-content-item" >                  <div  class ="text-center" >                      <p  class ="text-lg" >                          Choose one plan and watch everything on Netflix.                     </p >                      <a  href ="#"  class ="btn btn-lg" > Watch Free For 30 Days</a >                  </div >                  <table  class ="table" >                      <thead >                          <tr >                              <th > </th >                              <th > Basic</th >                              <th > Standard</th >                              <th > Premium</th >                          </tr >                      </thead >                      <tbody >                          <tr >                              <td > Monthly price after free month ends on 6/19/19</td >                              <td > $8.99</td >                              <td > $12.99</td >                              <td > $15.99</td >                          </tr >                          <tr >                              <td > HD Available</td >                              <td > <i  class ="fas fa-times" > </i > </td >                              <td > <i  class ="fas fa-check" > </i > </td >                              <td > <i  class ="fas fa-check" > </i > </td >                          </tr >                          <tr >                              <td > Ultra HD Available</td >                              <td > <i  class ="fas fa-times" > </i > </td >                              <td > <i  class ="fas fa-times" > </i > </td >                              <td > <i  class ="fas fa-check" > </i > </td >                          </tr >                          <tr >                              <td > Screens you can watch on at the same time</td >                              <td > 1</td >                              <td > 2</td >                              <td > 4</td >                          </tr >                          <tr >                              <td > Watch on your laptop, TV, phone and tablet</td >                              <td > <i  class ="fas fa-check" > </i > </td >                              <td > <i  class ="fas fa-check" > </i > </td >                              <td > <i  class ="fas fa-check" > </i > </td >                          </tr >                          <tr >                              <td > Unlimited movies and TV shows</td >                              <td > <i  class ="fas fa-check" > </i > </td >                              <td > <i  class ="fas fa-check" > </i > </td >                              <td > <i  class ="fas fa-check" > </i > </td >                          </tr >                          <tr >                              <td > Cancel anytime</td >                              <td > <i  class ="fas fa-check" > </i > </td >                              <td > <i  class ="fas fa-check" > </i > </td >                              <td > <i  class ="fas fa-check" > </i > </td >                          </tr >                          <tr >                              <td > First month free</td >                              <td > <i  class ="fas fa-check" > </i > </td >                              <td > <i  class ="fas fa-check" > </i > </td >                              <td > <i  class ="fas fa-check" > </i > </td >                          </tr >                      </tbody >                  </table >              </div >          </div >      </section >  
css:
class=”table”包裹住全部的表格,並且讓格線崩塌
.table thead th 讓 Basic Standard Premium 大寫並調整它們的 padding
.table tbody 這邊都是他的預設屬性(我查資料已經不適用於 HTML5)
接下來兩個設定是為了讓他們做變色框的設定也很直觀
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 .table  {    width : 100% ;     margin-top : 2rem ;          border-collapse : collapse;          border-spacing : 0 ; } .table  thead  th  {    text-transform : uppercase;     padding : 0.8rem ; } .table  tbody  {    display : table-row-group;     vertical-align : middle;     border-color : inherit; } .table  tbody  tr  td  {    color : #999 ;     padding : 0.8rem  1.2rem ;     text-align : center; } .table  tbody  tr  td :first -child {    text-align : left; } .table  tbody  tr :nth-child (odd) {    background : #222 ; } 
Footer 
兩個部分組成:
上方一個段落 p
footer-cols
html:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 <footer  class ="footer" >         <p > Questions? Call 1-866-579-7172</p >          <div  class ="footer-cols" >              <ul >                  <li > <a  href ="#" > FAQ</a > </li >                  <li > <a  href ="#" > Investor Relations</a > </li >                  <li > <a  href ="#" > Ways To Watch</a > </li >                  <li > <a  href ="#" > Corporate Information</a > </li >                  <li > <a  href ="#" > Netflix Originals</a > </li >              </ul >              <ul >                  <li > <a  href ="#" > Help Center</a > </li >                  <li > <a  href ="#" > Jobs</a > </li >                  <li > <a  href ="#" > Terms Of Use</a > </li >                  <li > <a  href ="#" > Contact Us</a > </li >              </ul >              <ul >                  <li > <a  href ="#" > Account</a > </li >                  <li > <a  href ="#" > Redeem Gift Cards</a > </li >                  <li > <a  href ="#" > Privacy</a > </li >                  <li > <a  href ="#" > Speed Test</a > </li >              </ul >              <ul >                  <li > <a  href ="#" > Media Center</a > </li >                  <li > <a  href ="#" > Buy Gift Cards</a > </li >                  <li > <a  href ="#" > Cookie Preferences</a > </li >                  <li > <a  href ="#" > Legal Notices</a > </li >              </ul >          </div >      </footer >  
css:
整個 footer 區域為了比上方的 containter 大一些,所以多設置了 max-width,並且上下加點 margin 並且置中,在使用 overflow 的方式讓它出現卷軸。
footer-cols 的部分一樣使用 grid 讓他們四個成一排
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 .footer  {         max-width : 70% ;     margin : 1rem  auto;     overflow : auto; } .footer ,.footer  a  {    color : #999 ;     font-size : 0.9rem ; } .footer  p  {    margin-bottom : 1.5rem ; } .footer  .footer-cols  {    display : grid;     grid-template-columns : repeat (4 , 1 fr);     grid-gap: 2rem ; } .footer  li  {    line-height : 1.9 ; } 
@media 
這邊解釋網頁縮放的設定:
當畫面小於 960px 得時候下方條件生效,除了一些東西縮小之外,有文字隱藏,logo 位置調整,
四排的物件縮排便成兩排
當畫面小於 700px 時還有另一部份的條件會生效,陰影的部分會變小,兩排的物件變成一排,以及一些微條
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 @media  (max-width : 960px ) {    .showcase  {         height : 70vh ;     }     .hide-sm  {         display : none;     }     .showcase-top  img  {         top : 30% ;         left : 5% ;         transform : translate (0 );     }     .showcase-content  h1  {         font-size : 3.7rem ;         line-height : 1 ;     }     .showcase-content  p  {         font-size : 1.5rem ;     }     .footer  .footer-cols  {         grid-template-columns : repeat (2 , 1 fr);     }     .btn-xl  {         font-size : 1.5rem ;         padding : 1.4rem  2rem ;         text-transform : uppercase;     }     .text-xl  {         font-size : 1.5rem ;     }     .text-lg  {         font-size : 1.3rem ;         margin-bottom : 1rem ;     }     .text-md  {         margin-bottom : 1rem ;         font-size : 1.2rem ;     } } @media  (max-width : 700px ) {    .showcase ::after  {         background : rgba (0 , 0 , 0 , 0.6 );         box-shadow : inset 80px  80px  150px  #000000 , inset -80px  -80px  150px  #000000 ;     }     .showcase-content  h1  {         font-size : 2.5rem ;         line-height : 1 ;     }     .showcase-content  p  {         font-size : 1rem ;     }     #tab-1-content  .tab-1-content-inner  {         grid-template-columns : 1 fr;         text-align : center;     }     #tab-2-content  .tab-2-content-top  {         display : block;         text-align : center;     }     #tab-2-content  .tab-2-content-bottom  {         margin-top : 2rem ;         display : grid;         grid-template-columns : 1 fr;         grid-gap: 2rem ;         text-align : center;     }     .btn-xl  {         font-size : 1rem ;         padding : 1.2rem  1.6rem ;         text-transform : uppercase;     } } @media(max-height: 600px) {     .showcase-content  {         margin-top : 3rem ;     } }